/*
 * GeneradorSintaxisDefinicion.java	 
 *
 * Copyright 2011 Universidad Francisco de Paula Santander (UFPS).
 * Todos los Derechos Reservados.
 * Creado el 07/10/11, 11:23:38 AM
 */
package com.ufps.cuatro.util.generadores;

import com.ufps.cuatro.controlador.render.UtilRender;
import java.util.logging.Level;
import java.util.logging.Logger;

import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorContenedor;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorClaseCompleja;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorUnitario;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorGeneradorVinculador;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorMetodo;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorIntegradorSimple;
import com.ufps.cuatro.modelo.representacion.componente.ComponenteDistribuidorModeloAsociado;
import com.ufps.cuatro.util.generadores.codeobject.CodeContext;
import com.ufps.cuatro.util.generadores.codeobject.CodeContextClass;
import com.ufps.cuatro.util.generadores.codeobject.EnumModificador;

/**
 * <i><b>GeneradorSintaxisDefinicion:</b></i><p>Esta Clase Representa el Punto de Inicio
 * en la Generación del Código Fuente de los Contextos de Código.</p>
 * 
 * @author Carlos A. Torres C. - Dolly E. Guerrero. <https://code.google.com/p/tesis4dor/>
 * @version 1.0 07/10/11
 * @see     GeneradorSintaxis
 */
public class GeneradorSintaxisDefinicion extends GeneradorSintaxis{
    private static final long serialVersionUID = 120717725679504374L;
    /**
     * Constructor por Defecto que recibe el <code>Componente</code> que generará
     * el Contexto para la Generación del Código Fuente que los Representará.
     * @param objComponenteDistribuidor <code>Componente</code> que generará
     * el Contexto para la Generación del Código Fuente que los Representará.
     */
    public GeneradorSintaxisDefinicion(ComponenteDistribuidor objComponenteDistribuidor) {
        super(objComponenteDistribuidor);        
    }
    
    /**
     * Devuelve el Contexto de Código del <code>Componente</code>.
     * @return Contexto de Código del <code>Componente</code>.
     */
    public CodeContext getCodeContext(){
        try{
            if(objComponenteDistribuidor instanceof ComponenteDistribuidorContenedor ||
                    objComponenteDistribuidor instanceof ComponenteDistribuidorGeneradorClaseCompleja ||
                    objComponenteDistribuidor instanceof ComponenteDistribuidorIntegradorMetodo ||
                    objComponenteDistribuidor instanceof ComponenteDistribuidorIntegradorSimple ||                
                    objComponenteDistribuidor instanceof ComponenteDistribuidorModeloAsociado ||
                    objComponenteDistribuidor instanceof ComponenteDistribuidorGeneradorUnitario ||
                    objComponenteDistribuidor instanceof ComponenteDistribuidorGeneradorVinculador){
                return getCodeContextClass();
            }
        }catch(java.lang.NullPointerException ex){
            UtilRender.printlnConsole("Componente Nulo:", ex.getMessage(), UtilRender.ACTION_ERROR);
        }
        return null;
    }
    
    private CodeContextClass getCodeContextClass(){        
        try{
            CodeContextClass objCodeContextClass = 
                    new CodeContextClass(EnumModificador.ePublic, objComponenteDistribuidor);
            return objCodeContextClass;
        }catch(java.lang.Exception ex){
            Logger.getLogger(GeneradorSintaxisDefinicion.class.getName()).log(Level.SEVERE, null, ex);
        }
        return null;
    }    
}
